package com.agritech.state;

import com.agritech.machine.AgriculturalMachineContext;

/**
 * 农机状态接口
 * 状态模式：允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。
 */
public interface MachineState {
    /**
     * 启动操作
     * @param context 农机上下文
     */
    void start(AgriculturalMachineContext context);

    /**
     * 停止操作
     * @param context 农机上下文
     */
    void stop(AgriculturalMachineContext context);

    /**
     * 执行任务操作
     * @param context 农机上下文
     * @param taskDetails 任务详情
     */
    void performTask(AgriculturalMachineContext context, String taskDetails);

    /**
     * 维修操作
     * @param context 农机上下文
     */
    void repair(AgriculturalMachineContext context);
    
    /**
     * 获取状态名称
     * @return 状态名称
     */
    String getStateName();
}